name: pypi-publish-nightly
on:
  schedule:
    - cron: '35 10 * * *' # 10:35am UTC, 2:35am PST, 5:35am EST
  workflow_dispatch:

jobs:
  # nightly release check from https://stackoverflow.com/a/67527144
  check-date:
    runs-on: ubuntu-latest
    outputs:
      should_run: ${{ steps.should_run.outputs.should_run }}
    steps:
      - uses: actions/checkout@v3
      - name: print latest_commit
        run: echo ${{ github.sha }}
      - id: should_run
        continue-on-error: true
        name: check latest commit is less than a day
        if: ${{ github.event_name == 'schedule' }}
        run: test -z $(git rev-list  --after="24 hours"  ${{ github.sha }}) && echo "::set-output name=should_run::false"

  nightly-build-pypi:
    runs-on: ubuntu-latest
    needs: check-date
    if: ${{ needs.check_date.outputs.should_run != 'false' }}
    steps:
      - name: Clone repository
        uses: actions/checkout@v3
      - name: Set up Python 3.10
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
          cache: 'pip' # caching pip dependencies
      - name: Install pypa/build
        run: >-
          python -m
          pip install
          build
          --user
      - name: Set release version
        run: |
          RELEASE_VERSION=$(date +%Y%m%d)
          sed -i "s/{{SKYPILOT_COMMIT_SHA}}/${{ github.sha }}/g" sky/__init__.py
          sed -i "s/__version__ = '.*'/__version__ = '1.0.0.dev${RELEASE_VERSION}'/g" sky/__init__.py
          sed -i "s/name='skypilot',/name='skypilot-nightly',/g" sky/setup_files/setup.py
      - name: Build a binary wheel and a source tarball
        run: >-
          python -m
          build
          --sdist
          --wheel
          --outdir dist/
          .
      - name: Publish distribution to Test PyPI
        uses: pypa/gh-action-pypi-publish@release/v1
        with:
          password: ${{ secrets.TEST_PYPI_API_TOKEN }}
          repository-url: https://test.pypi.org/legacy/
      - name: Publish distribution to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1
        with:
          password: ${{ secrets.PYPI_API_TOKEN }}

